package com.ftg.learn.chapter12;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * 链式
 *
 * @author kangjx
 * @version 1.0
 * @date 2023/2/9 上午9:52
 */
public class LearnLinked01 {

    public static void main(String[] args) {

        //1 arraylist  linkedlist 谁快的问题
        //1.1 存储结构
         //  linkedlist采用的是链式，快于ArrayList
        //1.2 寻址
        //1.2.1 存储量级越大，linkedlist寻址时间越长，所以越来越慢

        //角度 ： 就 插入操作以及删除本身来说
        //链存删除   寻址 ..........移动指针 慢
        //      节点的指针操作




        List<Dog> list = new LinkedList<>();
        //first = new Node(last,new Dog(),null)
        list.add(new Dog());

        Dog d1 = new Dog();
        d1.setDno(1);
        d1.setDname("沙皮");
        list.add(d1);
        //frist.next = new Node(first, d1.setDno(1);
        //        d1.setDname("沙皮"),null)
        //ox123
        d1 = new Dog();
        d1.setDno(2);
        d1.setDname("金毛");
        list.add(1,d1);

        System.out.println(list);

        //ox124
        Dog d2 = new Dog();
        d2.setDno(2);
        d2.setDname("金毛");
        //equals，电脑编程语言，被用来检测两个对象是否相等，即两个对象的内容是否相等
        //类的特性 一致性 自反性 对称性 传递性 对于非空引用x
//        1、自反性：x.equals（x）返回true；
//        2、对称性：若x.equals（y）为true，则y.equals（x）亦为true；
//        3、传递性：若x.equals（y）为true且y.equals（z）也为true，则x.equals（z）亦为true；
//        4、一致性：x.equals（y）的第一次调用为true，那么x.equals（y）的第二次、第三次、第n次调用也均为true，前提条件是没有修改x也没有修改y；
//        5、对于非空引用x，x.equals（null）永远返回为false。
        System.out.println(d1.equals(d2));
        //false
        System.out.println(d1 == d2);
//        list.remove(d2);
        list.remove(1);
        System.out.println(list);

    }

}
